#ifndef _MENSAJES_H_
#define _MENSAJES_H_


/* EStado de los pedidos */

#define STATE_READY 	66;
#define STATE_RUNNING	67;

/* Los sectores se piden: memcpy(mensaje->payload, "|nroSector|", 3); */

#define CONNEXION_REFUSED 	-10
#define HANDSHAKE_REFUSED 	-17
#define HANDSHAKE_ERROR 	-11
#define HANDSHAKE_OK		11
#define EXIT_ERROR_MEMORY 	-12
#define	EXIT_ERROR_RECV		-13
#define ESTADO_OPERATIVO_OK	14
#define THREAD_ERROR 		-15
#define SINCRONIZANDO_DISCO	16


#define	SOCKET_ERROR_DESCONEXION	0
#define	SOCKET_ERROR_SOCKET	-1
#define	SOCKET_ERROR_CONEXION	-3
#define	SOCKET_ERROR_INICIALIZAR	-4
#define	SOCKET_OK_SOCKET		1
#define	SOCKET_INVALIDO		-2

#define BOOL_OK				1

#define ARCHIVO_SOCKET "/tmp/.socketunix"

/*************MENSAJES DEL FILE SYSTEM*****************/

#define MSG_HANDSHAKE			0
#define MSG_HANDSHAKE_CONSOLA	0x01
#define MSG_HANDSHAKE_RAID		0x02
#define MSG_HANDSHAKE_PPD		0x03
#define MSG_HANDSHAKE_FS		0x04

/* Desde el 200 al 300 son PEDIDOS DE LECTURA */
#define MSG_GET_BOOT_SECTOR	200
#define MSG_GET_SECTOR		201
#define MSG_RTA_GET_BOOT_SECTOR	200
#define MSG_RTA_GET_SECTOR		201

/* Desde el 300 al 400 son PEDIDOS DE ESCRITURA */
#define MSG_WRITE_SECTOR	300
#define MSG_RTA_WRITE_SECTOR	300

/******************************/

typedef struct S_MSG_NIPC
{
    char DescriptorID[16];     		   /* Secuencial de descriptor   */
    unsigned char PayloadDescriptor;  	   /* Identificador del mensaje  */
    unsigned char PayloadLength[2];       /* Cantidad de Bits del array */
    char *Payload;
}stMsgNIPC;


int enviarMensaje(int Socket, stMsgNIPC *mensaje);
int recibirMensaje(int Socket, stMsgNIPC *mensaje);
int recibirInfo(int Socket, unsigned char *Buffer, long CantidadARecibir);
int enviarInfo(int Socket, unsigned char *Buffer, long CantidadAEnviar);

void NumToBin (unsigned char * buffer, int total);
unsigned int BinToNum (unsigned char * buffer);


int armarPedidoFromMensaje(stMsgNIPC* mensaje, stPedido* pedido);
int armarMensajeFromPedido(stMsgNIPC* mensaje, stPedido* pedido);


#endif /* _MENSAJES_H_ */
